package com.van.entity.sys;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 日志
 */
@Data
@TableName(value = "sys_log")
public class SysLog implements Serializable{
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    //标题
    private String title = Status.SYSTEM.name;
    //内容
    private String content;
    //日志类型 0系统日志  1用户日志 2管理员日志
    private Integer type = 0;
    //用户id
    @TableField("userId")
    private Long userId;
    //用户名
    @TableField("userName")
    private String userName;
    //ip
    private String ip;

    //创建时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField("createTime")
    private Date createTime = new Date();

    //逻辑删除
    @TableLogic
    private Integer deleted;
    /**
     * 初始化
     */
    public SysLog() {}

    public void UserAddLog (Status status, String s) {
        this.type = 1;
        this.title = status.name;
        this.content = s;
    }

    /**
     * 管理员日志
     * @param status 标题
     * @param s 日志
     */
    public void adminLog (Status status, String s) {
        this.type = 2;
        this.title = status.name;
        this.content = s;
    }

    public enum Status {
        SYSTEM("系统日志"),
        LOGIN("用户登录"),

        Add_Articles("添加文章"),
        Update_Articles("修改文章"),
        Del_Articles("删除文章"),

        Add_Articles_Category("添加文章分类"),
        Update_Articles_Category("修改文章分类"),
        Del_Articles_Category("删除文章分类"),

        ADD_USER("添加用户信息"),
        UPDATE_USER("修改用户信息"),
        DEL_USER("删除用户信息"),

        ADD_ROLE("添加角色"),
        UPDATE_ROLE("修改角色"),
        DEL_ROLE("删除角色"),
        BOUND_ROLE("绑定角色权限"),

        ADD_CONTRACT_TYPE("添加合同类型"),
        UPDATE_CONTRACT_TYPE("修改合同类型"),
        DEL_CONTRACT_TYPE("删除合同类型"),

        ADD_CONTRACT("添加合同"),
        UPDATE_CONTRACT("修改合同"),
        DEL_CONTRACT("删除合同"),

        ADD_MENU("添加导航"),
        UPDATE_MENU("修改导航"),
        DEL_MENU("删除导航"),

        ADD_SIGNO("添加道闸"),
        UPDATE_SIGNO("修改道闸"),
        DEL_SIGNO("删除道闸"),
        BATCH_SIGNO("批量导入道闸"),
        BATCH_EDIT_SIGNO("批量处理道闸"),

        Up_Img("上传图片"),

        ERROR("错误");
        // 成员变量
        private final String name;
        // 构造方法
        private Status(String name) {
            this.name = name;
        }
    }
}
